package com.yugao.fintech.antelope.pay.model.rqrs.pay.payorder;

import com.alibaba.fastjson2.annotation.JSONField;
import com.yugao.fintech.antelope.pay.model.rqrs.pay.AbstractMchAppRQ;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * 创建订单请求参数对象
 * 聚合支付接口（统一下单）
 *

 */
@Data
@EqualsAndHashCode(callSuper = true)
public class UnifiedOrderRQ extends AbstractMchAppRQ {

    /**
     * 商户订单号
     */
    @NotBlank(message = "商户订单号不能为空")
    protected String mchOrderNo;

    /**
     * 支付方式  如： wxpay_jsapi,alipay_wap等
     */
    @NotBlank(message = "支付方式不能为空")
    protected String wayCode;

    /**
     * 支付金额， 单位：元
     */
    @NotNull(message = "支付金额不能为空")
    protected BigDecimal amount;

    /**
     * 货币代码
     */
    @NotBlank(message = "货币代码不能为空")
    protected String currency;

    /**
     * 商品标题
     */
    @NotBlank(message = "商品标题不能为空")
    protected String goodsSubject;

    /**
     * 商品描述信息
     */
    @NotBlank(message = "商品描述信息不能为空")
    protected String goodsBody;

    /**
     * 异步通知地址
     */
    protected String notifyUrl;

    /**
     * 跳转通知地址
     */
    protected String returnUrl;

    /**
     * 订单失效时间, 单位：秒
     */
    protected Integer expiredTime;

    /**
     * 特定渠道发起额外参数
     */
    protected String channelExtra;

    /**
     * 商户扩展参数
     */
    protected String extParam;

    /**
     * 本次交易内容
     */
    protected String tradeContent;

    /**
     * 交易类型, 商户自己定义
     */
    protected String tradeType;

    /**
     * 分账模式： 0-该笔订单不允许分账, 1-支付成功按配置自动完成分账, 2-商户手动分账(解冻商户金额)
     */
    @Length(max = 2, message = "分账模式设置值有误")
    protected String divisionMode;

    /**
     * 获取渠道用户ID
     */
    @JSONField(serialize = false)
    public String getChannelUserId() {
        return null;
    }

}
